// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import API from './API'
import API_ORGAN from './API_ORGAN'

const begin = CORE.timeNum(CORE.today().slice(0, 7)) // 本月 1 号 00:00:00
const days = CORE.monthDays(begin) // 本月天数
const end = begin + 86400000 * days - 1000 // 本月最后一天 23:59:59

// ============================== 导出状态集 ============================== //

export const getXData = (begin, days) => Array(days).fill().map((_, i) => {
  const date = CORE.dateStr(begin + 86400000 * i)
  const week = CORE.weekCN(date).slice(-1)
  return `${date} ${week}`
})

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API: {
    ...API,
    ...API_ORGAN,
  },

  /**
   * 映射
   */
  MAP: {
    WORD: '排班日程', // 词语
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 类型
     */
    TYPE: [
      [2, '周'],
      [3, '月'],
    ],
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: {
    treeId: '', // 结构树 ID
    deptId: '', // 部门 ID
    userId: '', // 用户 ID
    type: 3, // 日期类型
    begin, // 开始时间
    end, // 结束时间
    xData: getXData(begin, days), // 名称列表
  },

  /**
   * 初始配置
   */
  INIT_CONFIG: {
    /**
     * 是否为单例结构树
     *
     * true  单例结构树 (只在原有数组上增改删)
     * false 普通结构树 (每次 setTree 生成新数组)
     */
    IS_SINGLE_TREE: true,
  },

  /**
   * 结构树字段 (可增加)
   */
  TREE_FIELD: ['children', 'id', 'name'],
}
